/*
 * Copyright 2009 Tran Nhut Trung.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and 
 * limitations under the License.
 */
package com.gdevelop.gwtxp.rebind.gwt;

import com.gdevelop.gwtxp.rebind.AbstractTag;
import com.gdevelop.gwtxp.rebind.Tag;

import com.gdevelop.gwtxp.rebind.el.ELParser;

import com.gdevelop.gwtxp.rebind.el.Node;

import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.NotFoundException;
import com.google.gwt.user.client.ui.Label;

import org.w3c.dom.Attr;


public class LabelTag extends AbstractTag{
  public LabelTag() {
  }

  public Class getUIClass() {
    return Label.class;
  }

  public void generateAddUI(Tag child) {
    // No-op
  }

  protected void generateTargetToModelUpdateValueStrategy(Attr attr) throws NotFoundException {
    if ("text".equals(attr.getName())){
      out.print("new GWTUpdateValueStrategy()");
      
      String pattern = getAttribute("pattern");
      if (pattern != null){
        String text = getAttribute("text");
        Node elNode = ELParser.parse(text);
        JClassType toType = elNode.getReturnType(elContext);
        out.print(generateSetPatternedConverter(TYPE_String, toType, pattern));
      }
  
      out.println();
    }else{
      super.generateTargetToModelUpdateValueStrategy(attr);
    }
  }
  protected void generateModelToTargetUpdateValueStrategy(Attr attr) throws NotFoundException {
    if ("text".equals(attr.getName())){
      out.print("new GWTUpdateValueStrategy()");
      
      String pattern = getAttribute("pattern");
      if (pattern != null){
        String text = getAttribute("text");
        Node elNode = ELParser.parse(text);
        JClassType fromType = elNode.getReturnType(elContext);
        out.print(generateSetPatternedConverter(fromType, TYPE_String, pattern));
      }
    
      out.println();
    }else{
      super.generateModelToTargetUpdateValueStrategy(attr);
    }
  }
}
